// 二、将下面的异步代码使用 Promise 的方式改进

const { flowRight } = require('lodash')
const fp = require('lodash/fp')
// 数据
// horsepower 马力， dollar_value 价格，

// in_stock 库存
const cars = [
    {name: 'Ferrari FF', horsepower: 660, dollar_value: 700000, in_stock:false},
    {name: 'Spyker C12 Zagato', horsepower: 650, dollar_value: 648000, in_stock:false},
    {name: 'Jaguar XKR-S', horsepower: 550, dollar_value: 132000, in_stock:false},
    {name: 'Audi R8', horsepower: 525, dollar_value: 114200, in_stock:true},
    {name: 'Aston Martin', horsepower: 750, dollar_value: 1850000, in_stock:true},
    {name: 'Pagani Huayra', horsepower: 700, dollar_value: 1300000, in_stock:true},]

    // 1
let isLastInStock = function (cars) {
    // 获取最后一条数据
    let last_car = fp.last(cars)
    // 获取最后一条数据的in_stock 属性值
    return fp.prop('in_stock', last_car)
}

const getInStock = (value) => fp.prop('in_stock', value)
const f1 = fp.flowRight(getInStock, fp.last);
f1(cars)

// 2
const getName = (value) => fp.prop('name', value)
const f2 = fp.flowRight(getName, fp.first);
console.log(f2(cars), "f2(cars)")


// 3
let _average = function (xs) {
    return fp.reduce(fp.add, 0, xs) / xs.length
}

let averageDollarValue = function (cars) {
    let dollar_values = fp.map(function(car) {
        return car.dollar_value
    }, cars)
    return _average(dollar_values)
}